//
//  HHRecommendViewController.m
//  百思不得姐
//
//  Created by hjl on 16/4/11.
//  Copyright © 2016年 hjl. All rights reserved.
//

#import "HHRecommendViewController.h"
#import <AFNetworking.h>
#import <SVProgressHUD.h>
#import <MJExtension.h>
#import "HHRecommendType.h"
#import "HHRecommendTypeCell.h"
#import "HHRecommendUser.h"
#import "HHRecommendUserCell.h"
#import <MJRefresh.h>
@interface HHRecommendViewController () <UITableViewDelegate, UITableViewDataSource>


/** 关注页面左侧的类别数组 */
@property (nonatomic, strong) NSArray *recommendTypes;

/** 关注页面左侧的tableciew */
@property (weak, nonatomic) IBOutlet UITableView *tableViewType;
/** 关注页面右侧的tableciew */
@property (weak, nonatomic) IBOutlet UITableView *tableViewUser;

@end

@implementation HHRecommendViewController

- (instancetype)init{
    self = [super init];
    if (self) {
        // 隐藏这个页面的tabbar
        self.hidesBottomBarWhenPushed = YES;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 基本设置
    [self setupTableView];
    
    // 显示指示器
    [SVProgressHUD show];
    
    // 添加刷新控件
    [self setupRefresh];
    
    // 获取数据
    [self getListData];
}

- (void)setupTableView{
    
    self.view.backgroundColor = HHBackgroundColor;
    self.title = @"推荐关注";
    
    // 设置auto
    self.automaticallyAdjustsScrollViewInsets = NO;
    // 设置内容边距
    self.tableViewType.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
    self.tableViewUser.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
    
    self.tableViewUser.tableFooterView = [[UIView alloc] init];
    self.tableViewUser.rowHeight = 70;
    
    //注册HHRecommendTypeCell
    [self.tableViewType registerNib:[UINib nibWithNibName:@"HHRecommendTypeCell" bundle:nil] forCellReuseIdentifier:@"recommendTypeCell"];
    //注册HHRecommendTypeCell
    [self.tableViewUser registerNib:[UINib nibWithNibName:@"HHRecommendUserCell" bundle:nil] forCellReuseIdentifier:@"recommendUserCell"];
}

// 加载左侧数据
- (void)getListData{
    NSString *strUrl  = @"http://api.budejie.com/api/api_open.php";
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    parameters[@"a"] = @"category";
    parameters[@"c"] = @"subscribe";
    
    [[AFHTTPSessionManager manager] GET:strUrl parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        // 隐藏指示器
        [SVProgressHUD dismiss];
        
        // 字典数组转模型数组
        self.recommendTypes = [HHRecommendType mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
        
        // 刷新数据
        [self.tableViewType reloadData];
        
        // 默认选中首行
        [self.tableViewType selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
        
        [self loadNewUsers];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        // 结束刷新
        [self.tableViewUser.mj_footer endRefreshing];
        // 指示器提示加载错误
        [SVProgressHUD showErrorWithStatus:@"网络加载失败"];
    }];
}

// 添加刷新控件
- (void)setupRefresh{
    self.tableViewUser.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreUsers)];
    self.tableViewUser.mj_footer.hidden = YES;
}

// 首次加载新数据
- (void)loadNewUsers{
    HHRecommendType *c = self.recommendTypes[self.tableViewType.indexPathForSelectedRow.row];
    
    // 设置当前页码为1
    c.page = 1;
    if (c.recommendUsers.count) {
        // 刷新数据
        [self.tableViewUser reloadData];
    }else{
        // 刷新数据
        [self.tableViewUser reloadData];
        
        NSString *strUrl  = @"http://api.budejie.com/api/api_open.php";
        NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
        parameters[@"a"] = @"list";
        parameters[@"c"] = @"subscribe";
        parameters[@"category_id"] = @(c.id);
        parameters[@"page"] = @(c.page);
        [[AFHTTPSessionManager manager] GET:strUrl parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            
            // 字典数组转模型数组
            NSArray *array = [HHRecommendUser mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
            [c.recommendUsers addObjectsFromArray:array];
            
            // 保存总数
            c.total = [responseObject[@"total"] intValue];
            
            // 刷新数据
            [self.tableViewUser reloadData];
            
            // 结束刷新
            [self.tableViewUser.mj_footer endRefreshing];
            
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            // 结束刷新
            [self.tableViewUser.mj_footer endRefreshing];
            // 指示器提示加载错误
            [SVProgressHUD showErrorWithStatus:@"网络加载失败"];
        }];
    }

}

// 下拉加载更多
- (void)loadMoreUsers{
    HHRecommendType *c = self.recommendTypes[self.tableViewType.indexPathForSelectedRow.row];
    
    NSString *strUrl  = @"http://api.budejie.com/api/api_open.php";
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    parameters[@"a"] = @"list";
    parameters[@"c"] = @"subscribe";
    parameters[@"category_id"] = @(c.id);
    parameters[@"page"] = @(++c.page);
    
    [[AFHTTPSessionManager manager] GET:strUrl parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        // 字典数组转模型数组
        NSArray *array = [HHRecommendUser mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
        
        [c.recommendUsers addObjectsFromArray:array];
        
        // 刷新数据
        [self.tableViewUser reloadData];
        
        // 加载了全部数据
        if (c.recommendUsers.count == c.total) {
            [self.tableViewUser.mj_footer endRefreshingWithNoMoreData];
            
        }else{
            // 结束刷新
            [self.tableViewUser.mj_footer endRefreshing];
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        // 结束刷新
        [self.tableViewUser.mj_footer endRefreshing];
        // 指示器提示加载错误
        [SVProgressHUD showErrorWithStatus:@"网络加载失败"];
    }];

}


#pragma - 数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if (tableView == self.tableViewType) {
        // 左侧数据
        return self.recommendTypes.count;
    }else{
        // 右侧数据
        // 先拿到左侧数据的 <行> 对应的模型
        HHRecommendType *c = self.recommendTypes[self.tableViewType.indexPathForSelectedRow.row];
        
        // 判断是否隐藏刷新控件
        self.tableViewUser.mj_footer.hidden = (c.recommendUsers.count == 0);
        
        return c.recommendUsers.count;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    if (tableView == self.tableViewType) {
        // 左侧数据
        HHRecommendTypeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"recommendTypeCell"];
        
        HHRecommendType *type = self.recommendTypes[indexPath.row];
        cell.type = type;
        
        return cell;
    }else {
        // 右侧数据
        HHRecommendUserCell *cell = [tableView dequeueReusableCellWithIdentifier:@"recommendUserCell"];
        
        // 先拿到左侧数据的 <行> 对应的模型
        HHRecommendType *c = self.recommendTypes[self.tableViewType.indexPathForSelectedRow.row];
        
        HHRecommendUser *user = c.recommendUsers[indexPath.row];
        
        cell.user = user;
       
        return cell;
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    // 点击的左边的cell, 第一次加载数据
    if (tableView == self.tableViewType) {
        [self loadNewUsers];
    }
}

@end
